package com.itheima.day10;

import java.util.Random;
import java.util.Scanner;

public class Test6 {
    /*
    在我们进行网站登录注册时，通常都会有一个输入验证码的选项。验证码的组成通常包含：大写字母，小写字母和数
字，验证码的长度通常为4个字符长度，不同字符的搭配完全随机。
请使用所学知识，定义一个方法，专门用于生成随机验证码，并在主方法中完成调用，模拟用户验证码输入校验过
程，当用户输入的验证码与系统生成验证码匹配时，给出验证通过提示，否则，重新生成验证码，要求用户重新输
入，再重复以上匹配逻辑
     */
    public static void main(String[] args) {
        //利用死循环来验证客户是否通过,输入正确则用retur结束循环,不通过继续
        while (true) {
            //调用方法使用变量接收当前验证码
            String str = getVerificationNum();
            System.out.println("当前验证码:" + str);
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入验证码:");
            //客户输入验证码进行匹配
            String str1 = sc.next();
            if (str.equalsIgnoreCase(str1)) {
                System.out.println("验证通过");
                return;
            } else {
                System.out.println("验证失败,请重新输入:");
            }
        }
    }

    public static String getVerificationNum() {
        Random r = new Random();
        //确定验证码取值范围
        String bigLetter = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
//定义StringBuilder类型变量拼接字符
        StringBuilder str = new StringBuilder();
        //用for循环生成验证码
        for (int i = 0; i < 4; i++) {
            //随机数获取随机索引
            int num = r.nextInt(bigLetter.length());
            char ch = bigLetter.charAt(num);
            str.append(ch);
        }
        return str.toString();
    }
}
